package cn.initcap.concurrency.concurrency.ratelimiter;

import com.google.common.util.concurrent.RateLimiter;
import lombok.extern.slf4j.Slf4j;

/**
 * @author initcap
 * @date Created in 2018/8/19 PM5:18.
 */
@Slf4j
public class RateLimiterExample1 {

    private static final int SIZE = 100;
    /**
     * 令牌桶算法 每秒发放五个令牌
     */
    private static RateLimiter rateLimiter = RateLimiter.create(5);

    public static void main(String[] args) {
        for (int i = 0; i < SIZE; i++) {
            // 只有获取了令牌才能执行方法，其他的进行丢弃，不执行。
            if (rateLimiter.tryAcquire()) {
                handle(i);
            }
        }
    }

    private static void handle(int i) {
        log.info("执行的序号:{}", i);
    }

}
